package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 定义一个注解
 *
 * 定义注解时，通常会给该注解标记两个注解，这两个的Java内置注解
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AutoRun {
    /*
            当注解需要附带信息时,可以在标注注解时"传参".而参数会被赋值到下面
            定义的变量(或看成方法名)上.

            当存在多个参数时,使用注解时传参形式为:
            @AutoRun(num=5,age=16,name="张三")
            @AutoRun(age=55,name="张三",num=22)
            参数的顺序可以不同.

            若只有一个参数,通常参数名应当定义为value.
            原因:
            使用注解时可以不用指定参数名
            @AutoRun(5)

            否则需要写成(若注解中只有一个参数,且命名为:int num(); ):
            @AutoRun(num=5)

            参数可以使用default指定默认值,那么在使用注解时若不指定参数则使用该值
            如:
            @AutoRun    value使用默认值1
            @AutoRun(5) value的值为5
         */
    int value() default 1;
}
